package 常用的集合类;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;


public class CollectionDemo {
    /**collection定义了单列集合：list和set两个子接口；list的实现类是ArrayList
     * Collection的功能 
                1、添加功能 
                        boolean add(Object obj):向集合中添加一个元素。
                        boolean addAll(Collection c):向集合中添加一个集合的元素。
                2、删除功能 
                        void clear():删除集合中所有的元素。
                        boolean remove(Object obj):删除集合中指定的元素。
                        boolean removeAll(Collection c):删除集合中指定的集合元素。
                3、判断功能 
                        boolean isEmpty():判断集合是否为空。
                        boolean contains(Object obj):判断集合是否包含指定的元素。
                        boolean containsAll(Collection c):判断集合是否包含指定的集合中的元素。
                4、遍历功能 
                        Iterator iterator():迭代器。
                                hasNext（）:判断是否还有元素
                                next():获取下一个元素
                5、长度功能 
                        int size():获得集合的元素个数。
                6、交集功能
                        boolean retainAll(Collection c):判断集合中是否有相同的元素。
                7、转换功能
                        Object[] toArray():把集合变成数组。
     * @author 宋利军
     */
		 public static void main(String[] args) {
			TestArrayList();
		}

	private static void TestArrayList() {
		// TODO Auto-generated method stub
		Collection l=new ArrayList();
		List list =new ArrayList();
		list.add("1");
		list.add("2");
		list.add("3");
		list.add("4");//这里只能使用ArrayList的方法
		
		
//		System.out.println(list);
		System.out.println(list.toString());//遍历数组元素
		System.out.println(list.add("A"));//判断是否添加成功
		System.out.println(list);//重新打印列表
		System.out.println(list.size());//判断元素的个数
		System.out.println(list.isEmpty());//判断是否为空
		list.remove(3);//移除index=3的元素
		System.out.println(list);
		System.out.println(list.remove(2));//输出现在移除index=2的（元素:3）
		System.out.println(list);//[1, 2, A]
		System.out.println(list.set(0, "hello"));//将index位置的元素替换之后返回替换的掉的元素值
		System.out.println(list);//重新查询
		System.out.println(list.indexOf("2"));//返回对象2在list中出现的位置的索引
		list.add("3");
		list.add("4");
		list.add("5");
		list.add("2");
		list.add("7");
		list.add("8");
		System.out.println(list.toString());//[hello, 2, A, 3, 4, 5, 2, 7, 8]
		System.out.println(list.get(1));//list.get(index):是从collection方法中继承过来的；存取;输出：2；结论：输出元素

		System.out.println(list.lastIndexOf(2));//-1
		System.out.println(list.lastIndexOf("2"));//查询该元素最后一次出现的索引
		System.out.println(list.subList(1, 6));//截取集合中的部分重新组成新集合
		System.out.println(list.contains("2"));//判断是否存在一个元素true
		System.out.println(list.containsAll(l));//判断该集合是否包含其他集合的所有元素true
		System.out.println(list.getClass());
//		System.out.println(l);//[]
		//第一种遍历使用foreach
//		for(List str:){
//			System.out.println(str);
//		}
		//第二种遍历方法：链表变成数组相关的内容进行遍历
//		String[] strArray=new String[list.size()];
//		list.toArray(strArray);
////		这里也可以改写成foreach(String str:strArray);形式
//		for(int i=0;i<strArray.length;i++){
//			System.out.println(strArray[i]);
//		}
         
		//第三种遍历 使用迭加器进行相关遍历（重点）
//      Iterator<String> ite1=list.iterator();
		Iterator ite=list.iterator();//获取iteration对象
		while(ite.hasNext()){   //判断ArrayList集合中是否存在下一个元素
			Object obj=ite.next();  //取出ArrayList集合中的元素,obj是元素
//        	System.out.println(ite.next());//取出ArrayList集合中的元素
			System.out.println(obj);//和System.out.println(obj.toString());等效的
			System.out.println(obj.getClass());//class java.lang.String获取对象的类型
		   }
		}
}
